#include <stdio.h> 
#include <stdlib.h>
#include <sys/types.h> 
#include <sys/wait.h> 
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>

#define MAX 128
int main(int argc, char *argv[])
{
	char *fich; //Variable para almacenar el nombre del fichero a leer
	char *tuberia; //Nombre de la tuberia
	//Variable a utilizar como buffer de lectura/escritura
	char buf[MAX];
	//Si recibimos parametros
	if (argc>2) {
		//Asignamos los valores recibidos como parametro
		fich=argv[1];
		tuberia=argv[2];
		//Vaciamos el buffer
		memset(buf,0,MAX);
		//Abrimos el fichero para lectura
		int fdr=0;
		if((fdr=open(fich, O_RDONLY))<0)
		{
			perror("Error abriendo el archivo de entrada");
			close(fdr);
			exit(EXIT_FAILURE);
		}
		//Abrimos la tuberia recibida como parametro para escritura
		int fdwp=0;
		if((fdwp=open(tuberia, O_WRONLY))<0)
		{
			perror("Error al abrir la tuberia, comprueba el nombre pasado como argumento");
			close(fdr);
			exit(EXIT_FAILURE);
		}
		int nescrito=0;
		while ((nescrito=read(fdr,buf,MAX))>0) //Mientras haya contenido
		{
			//Escribimos en la tuberia
			if (write(fdwp, buf, nescrito)<0)
			{
				perror("Error de escritura en la tuberia");
				exit(EXIT_FAILURE);
			}
		}
		close(fdr);
		close(fdwp);
		exit(0);
	}
	else
	{
		printf("¡¡ERROR!! ¡¡NO SE HAN RECIBIDO 2 PARAMETROS!!\n");
	};
}
